﻿using System;
using System.Reflection;

// 定义 Person 类
public class Ps
{
    public string Name { get; set; }
    public int Age { get; set; }

    // 构造方法
    public Ps(string name, int age)
    {
        Name = name;
        Age = age;
    }

    public void Introduce()
    {
        Console.WriteLine($"我叫 {Name}，今年 {Age} 岁。");
    }
}

class Program
{
    static void Main()
    {
        try
        {
            // 获取 Person 类的类型信息
            Type psType = typeof(Ps);

            // 定义构造方法的参数类型
            Type[] constructorParamTypes = { typeof(string), typeof(int) };

            // 获取指定参数类型的构造方法
            ConstructorInfo constructor = psType.GetConstructor(constructorParamTypes);

            if (constructor != null)
            {
                // 定义构造方法的参数值
                object[] constructorArgs = { "张三", 20 };

                // 使用反射调用构造方法创建 Person 类的实例
                object personInstance = constructor.Invoke(constructorArgs);

                // 将创建的实例转换为 Person 类型
                Ps person = (Ps)personInstance;

                // 调用实例的方法
                person.Introduce();
            }
            else
            {
                Console.WriteLine("未找到匹配的构造方法。");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"发生错误: {ex.Message}");
        }
    }
}